package model;

import javax.swing.table.TableColumnModel;

/**
 * Менеджер колонок для таблицы над списком.
 * 
 * @author aemaeth
 * 
 * @param <V>
 *            тип объекта
 */
public interface Mapper<V> {
	/**
	 * Получить количество колонок.
	 * 
	 * @return количество колонок
	 */
	int getCount();

	/**
	 * Создать {@link TableColumnModel} для таблицы по набору колонок.
	 * 
	 * @return модель колонок
	 */
	TableColumnModel makeColumnModel();

	/**
	 * Получить отображение {@code i}'ой колонки.
	 * 
	 * @param i
	 *            номер колонки в модели
	 * @return отображение колонки
	 */
	SingleMapper<V> getSingleMapper(int i);
}